﻿using System.Windows;
//using System.Windows.Media.Animation;
//using System.Xml.Serialization;
using Newtonsoft.Json;

namespace Flitter.Twitter
{
    public partial class Statuses : object, System.ComponentModel.INotifyPropertyChanged
    {

        private StatusesStatus[] itemsField;

        public StatusesStatus[] Items
        {
            get
            {
                if (this.itemsField.Length == 0)
                {
                    StatusesStatus status = new StatusesStatus() {
                        text = "tweetが見つかりませんでした"
                        , created_at = "Sun Jan 01 06:00:00 +0000 2012"
                        , id = string.Empty
                        , user = new StatusesStatusUser() {
                            screen_name = "はるたま"
                            , description = string.Empty
                            , id = string.Empty
                            , location = string.Empty
                            , url = string.Empty
                            , name = "harutama"
                            , profile_image_url = "http://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_3_normal.png"
                        }
                    };
                    
                    StatusesStatus[] retval = new StatusesStatus[1];
                    retval[0] = status;
                    
                    return retval;
                }

                return this.itemsField;
            }
            set
            {
                if ((this.itemsField != value))
                {
                    this.itemsField = value;
                    this.RaisePropertyChanged("Items");
                }
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

    [JsonObject("timeline")]
    public class StatusesStatus : object, System.ComponentModel.INotifyPropertyChanged
    {
        private string created_atField;

        private string idField;

        private string textField;

        private StatusesStatusUser userField;

        public string created_at
        {
            get
            {
                return this.created_atField;
            }
            set
            {
                if ((this.created_atField != value))
                {
                    this.created_atField = value;
                    this.RaisePropertyChanged("created_at");
                }
            }
        }

        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                if ((this.idField != value))
                {
                    this.idField = value;
                    this.RaisePropertyChanged("id");
                }
            }
        }

        public string text
        {
            get
            {
                return this.textField;
            }
            set
            {
                if ((this.textField != value))
                {
                    this.textField = value;
                    this.RaisePropertyChanged("text");
                }
            }
        }

        [JsonProperty("user")]
        public StatusesStatusUser user
        {
            get
            {
                return this.userField;
            }
            set
            {
                if ((this.userField != value))
                {
                    this.userField = value;
                    this.RaisePropertyChanged("user");
                }
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

    [JsonObject("user")]
    public class StatusesStatusUser : object, System.ComponentModel.INotifyPropertyChanged
    {

        private string idField;

        private string nameField;

        private string screen_nameField;

        private string locationField;

        private string descriptionField;

        private string profile_image_urlField;

        private string urlField;

        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                if ((this.idField != value))
                {
                    this.idField = value;
                    this.RaisePropertyChanged("id");
                }
            }
        }

        public string name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                if ((this.nameField != value))
                {
                    this.nameField = value;
                    this.RaisePropertyChanged("name");
                }
            }
        }

        public string screen_name
        {
            get
            {
                return this.screen_nameField;
            }
            set
            {
                if ((this.screen_nameField != value))
                {
                    this.screen_nameField = value;
                    this.RaisePropertyChanged("screen_name");
                }
            }
        }

        public string location
        {
            get
            {
                return this.locationField;
            }
            set
            {
                if ((this.locationField != value))
                {
                    this.locationField = value;
                    this.RaisePropertyChanged("location");
                }
            }
        }

        public string description
        {
            get
            {
                return this.descriptionField;
            }
            set
            {
                if ((this.descriptionField != value))
                {
                    this.descriptionField = value;
                    this.RaisePropertyChanged("description");
                }
            }
        }

        public string profile_image_url
        {
            get
            {
                return this.profile_image_urlField;
            }
            set
            {
                if ((this.profile_image_urlField != value))
                {
                    this.profile_image_urlField = value;
                    this.RaisePropertyChanged("profile_image_url");
                }
            }
        }

        public string url
        {
            get
            {
                return this.urlField;
            }
            set
            {
                if ((this.urlField != value))
                {
                    this.urlField = value;
                    this.RaisePropertyChanged("url");
                }
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }


    public partial class users : object, System.ComponentModel.INotifyPropertyChanged
    {

        private usersUser[] itemsField;

        /// <remarks/>
        public usersUser[] Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                if ((this.itemsField != value))
                {
                    this.itemsField = value;
                    this.RaisePropertyChanged("Items");
                }
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

    public partial class usersUser : object, System.ComponentModel.INotifyPropertyChanged
    {

        private string idField;

        private string nameField;

        private string screen_nameField;

        private string locationField;

        private string descriptionField;

        private string profile_image_urlField;

        private string urlField;

        private string protectedField;

        private usersUserStatus[] statusField;

        /// <remarks/>
        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                if ((this.idField != value))
                {
                    this.idField = value;
                    this.RaisePropertyChanged("id");
                }
            }
        }

        /// <remarks/>
        public string name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                if ((this.nameField != value))
                {
                    this.nameField = value;
                    this.RaisePropertyChanged("name");
                }
            }
        }

        /// <remarks/>
        public string screen_name
        {
            get
            {
                return this.screen_nameField;
            }
            set
            {
                if ((this.screen_nameField != value))
                {
                    this.screen_nameField = value;
                    this.RaisePropertyChanged("screen_name");
                }
            }
        }

        /// <remarks/>
        public string location
        {
            get
            {
                return this.locationField;
            }
            set
            {
                if ((this.locationField != value))
                {
                    this.locationField = value;
                    this.RaisePropertyChanged("location");
                }
            }
        }

        /// <remarks/>
        public string description
        {
            get
            {
                return this.descriptionField;
            }
            set
            {
                if ((this.descriptionField != value))
                {
                    this.descriptionField = value;
                    this.RaisePropertyChanged("description");
                }
            }
        }

        /// <remarks/>
        public string profile_image_url
        {
            get
            {
                return this.profile_image_urlField;
            }
            set
            {
                if ((this.profile_image_urlField != value))
                {
                    this.profile_image_urlField = value;
                    this.RaisePropertyChanged("profile_image_url");
                }
            }
        }

        /// <remarks/>
        public string url
        {
            get
            {
                return this.urlField;
            }
            set
            {
                if ((this.urlField != value))
                {
                    this.urlField = value;
                    this.RaisePropertyChanged("url");
                }
            }
        }

        /// <remarks/>
        public string @protected
        {
            get
            {
                return this.protectedField;
            }
            set
            {
                if ((this.protectedField != value))
                {
                    this.protectedField = value;
                    this.RaisePropertyChanged("protected");
                }
            }
        }

        /// <remarks/>
        public usersUserStatus[] status
        {
            get
            {
                return this.statusField;
            }
            set
            {
                if ((this.statusField != value))
                {
                    this.statusField = value;
                    this.RaisePropertyChanged("status");
                }
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

    public partial class usersUserStatus : object, System.ComponentModel.INotifyPropertyChanged
    {

        private string created_atField;

        private string idField;

        private string textField;

        /// <remarks/>
        public string created_at
        {
            get
            {
                return this.created_atField;
            }
            set
            {
                if ((this.created_atField != value))
                {
                    this.created_atField = value;
                    this.RaisePropertyChanged("created_at");
                }
            }
        }

        /// <remarks/>
        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                if ((this.idField != value))
                {
                    this.idField = value;
                    this.RaisePropertyChanged("id");
                }
            }
        }

        /// <remarks/>
        public string text
        {
            get
            {
                return this.textField;
            }
            set
            {
                if ((this.textField != value))
                {
                    this.textField = value;
                    this.RaisePropertyChanged("text");
                }
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null))
            {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }

}